import java.util.*;

/**
 * @author haomin
 * @date 2022/10/20 15:34
 **/
public class 常用代码片段 {

    class 二分法 {
        // 1. 程序中不要同时出现l = mid, r = mdi这两条语句。
        //
        // 2. 如果程序中出现了l = mid，mid的值用 (l + r + 1) / 2计算。
        //
        // 3. 如果程序中出现了r = mid，mid的值用（(l + r) / 2计算。
    }

    public static void main(String[] args) {
        // 1. set集合转化位数组
        Set<Integer> set = new HashSet<>();
        Integer[] arr = set.toArray(new Integer[0]);

        // 2. LinkedList数组转化为普通数组
        List<Integer> list = new LinkedList<>();
        int[] arr2 = list.stream().mapToInt(Integer::intValue).toArray();

        // 3. PriorityQueue转化为普通数组
        PriorityQueue<Integer> q = new PriorityQueue<>();
        int[] ints = q.stream().mapToInt(Integer::intValue).toArray();

        Deque<Integer> s = new LinkedList<>();
        int[] ints1 = s.stream().mapToInt(Integer::intValue).toArray();

        // 4. 字典序排序字符串
        List<String> list1 = new LinkedList<>();
        Collections.sort(list1, (x, y) -> (x+y).compareTo(y+x));

        // 5. List<int[]> -> int[][]
        List<int[]> list2 = new ArrayList<>();
        list2.toArray(new int[list2.size()][]);

        // 二维数组排序
        int[][] m = new int[1][1];
        Arrays.sort(m, (a, b) -> (a[0] - b[0]));

        // 优先级队列 升序
        Queue<long[]> queue = new PriorityQueue<>((a, b) -> (a[0] < b[0] ? -1 : 1));

        // 得到map的key-value
        Map<Integer, Integer> map = new HashMap<>();

        Set<Map.Entry<Integer, Integer>> entries = map.entrySet();
        for (Map.Entry<Integer, Integer> entry : entries) {
            System.out.println(entry.getKey() +" "+ entry.getValue());
        }
    }
}